<?php

class SolicitacaoAmostra extends Zend_Db_Table
{
    protected $_name = "solicitacao_amostra";

    public function getTotalAmostra($id,$cliente)
    {
         $select= $this->select()
                      ->from($this, "count(distinct idAmostra) as qtd")
                      ->where (' idSolicitacao = ?', $id)
                      ->where (' idCliente     = ?', $cliente);
        
         $resultado = $this->fetchRow($select);
         $qtd=$resultado->qtd;
         if($qtd!=null)
            return $qtd;
         else
            return 0;
    }
    public function getTotalExames($id,$cliente)
    {
         $select= $this->select()
                      ->from($this, "count(distinct idExame) as qtd")
                      ->where (' idSolicitacao = ?', $id)
                      ->where (' idCliente     = ?', $cliente);
        
         $resultado = $this->fetchRow($select);
         $qtd=$resultado->qtd;
         if($qtd!=null)
            return $qtd;
         else
            return 0;
    }
    public function lista(array $request,$cliente)
	{
		$dados = array();
		
                
                $select = $this->select()
			       ->from($this, 'COUNT(*) AS qtd')
			       ->where("situacao = ? ",'P')
                               ->where("idcliente = ?", $cliente);
                
                 
		$result = $this->fetchRow($select);
                
		
                if($result->qtd > 0){
			$total_pages = ceil($result->qtd / $request['rows']);
		}else{
			$total_pages = 0;
		
                        
                }
		
		
		if($request['page'] == 1){
			$start = 0;
		}else{
			$start = ($request['rows'] * $request['page']) - $request['rows'];
		}

		$dados['total']	= $total_pages;
		$dados['page']	= $request['page'];
		$dados['records'] = $result->qtd;

               
                
              
		if($request['sidx'])
		{
                                
                                 
				$order =  $request['sidx']  . " " . $request['sord'] ;
                                $limit  =  $start ." , ". $request['rows'] ;
		}
		else
		{
				 $limit  =  $start ." , ". $request['rows'] ;
			
		}
              
                 $select = $this->select()
                               ->distinct()
                               ->from($this, array('idSolicitacao','dataCadastro','idUsucad','idCliente'))
                               ->where(' situacao = ?', 'P')
                               ->where(' idCliente = ?'  , $cliente)
                               ->order($order)
                               ->limit($limit);
                
		$resultado =  $this->fetchAll($select);
                
                $daoU = new Usuario();
                 
                
		for ($cont = 0; $cont < count($resultado); $cont++)
		{
                        $usuario = $daoU->_getUsuario($resultado[$cont]['idUsucad']);
                        
			$dados['rows'][$cont]['id'] =  $resultado[$cont]['idSolicitacao'];
			$dados['rows'][$cont]['cell'] =  array( $resultado[$cont]['idSolicitacao'],
								$resultado[$cont]['dataCadastro'],
								$usuario['nome'],
                                                                $this->getTotalAmostra($resultado[$cont]['idSolicitacao'],$resultado[$cont]['idCliente']),
                                                                $this->getTotalExames($resultado[$cont]['idSolicitacao'],$resultado[$cont]['idCliente'])
                           
                            );
		
		 }
			
		 return $dados;
	}
        
    public function add($idSol,$idCliente,$idAmostra,$idExame,$numColeta,$idUsuCad)
    {
  
       
        
        $dados = array(
            		'idSolicitacao' => $idSol,
                        'idCliente'=> $idCliente,
            		'idAmostra'=> $idAmostra,
            		'idExame'=> $idExame,
                        'numColeta'=> $numColeta,
                        'dataCadastro' => date('y-m-d'),
                        'situacao' => 'P',
                        'idUsuCad' => $idUsuCad
	           
	);  
        
       
         $this->_db->beginTransaction();
         try
         {
         
            $this->insert($dados); 
            $this->_db->commit();
            $retorno =true;
           
         }
         catch (Zend_Exception $e)
         {
            $this->_db->rollBack(); 
            print_r($e->getMessage());
             $retorno =false;
           
            
         }
          return  $retorno ;
        
       
    }
   
    public function del($idSol,$idCliente)
    {
        $resposta = false;
        
        $select = $this->select()
                       ->from($this,'count(distinct idSolicitacao) as qtde')
                       ->where(' idSolicitacao = ?', $idSol)
                       ->where(' idCliente     = ?', $idCliente)
                       ->where(" situacao  = 'C'");
        
        $resultado = $this->fetchRow($select);
        
        $qtd = $resultado->qtde;
        
        if($qtd == 0)
        {
        
                $where = $this->_db->quoteInto(' idSolicitacao = ? ', $idSol);
                $where .= $this->_db->quoteInto(' and  idCliente = ? ', $idCliente);
                
                
                try {
                    $this->_db->beginTransaction();
                    $x= $this->delete($where);
                    $this->_db->commit();
                    $resposta = true;
                    
                } catch (Zend_Exception $exc) {
                    $this->_db->rollBack();
                    print_r($exc->getMessage());
                    $resposta = false;
                }
        }
        
        return $resposta;
        
    }
    public function delAmostra($idAmostra)
    {
        $where = $this->getAdapter()->quoteInto("idAmostra = ?", $idAmostra);
        return $this->delete($where);
    }
    
    public function concluiSolicitacao($idAmostra,$idCliente,$idExame)
    {
        try
        {
         $dados = array(
                'situacao' => 'C'
             );
            $where = $this->getAdapter()->quoteInto("idAmostra = ? ", $idAmostra);
            $where .= $this->getAdapter()->quoteInto("  and idCliente = ?", $idCliente);
            $where .= $this->getAdapter()->quoteInto(" and idExame = ?", $idExame);
            
            
            $resultado = $this->update($dados, $where);
            if($resultado != 0)
                $res =1;
            else
                $res= 0;
        
           
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }

        return $res;
    }
}